package br.com.sgac.controler;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.sgac.dao.CidadeDAO;
import br.com.sgac.dao.PacienteDAO;
import br.com.sgac.model.Cidade;
import br.com.sgac.model.Endereco;
import br.com.sgac.model.Paciente;

/**
 * Servlet implementation class PacienteServlet
 */
@WebServlet("/PacienteServlet")
public class PacienteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	PacienteDAO pacienteDAO = new PacienteDAO();

    /**
     * @see HttpServlet#HttpServlet()
     */
    public PacienteServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		List<Paciente> pacientes = new ArrayList<Paciente>();
		Paciente paciente = new Paciente();
		
		String editar = request.getParameter("editar");
		pacientes = pacienteDAO.findAll();
		request.setAttribute("pacientes", pacientes);
		
		if(editar!=null){
			paciente = pacienteDAO.findPacienteById(editar);
			request.setAttribute("paciente", paciente);
			RequestDispatcher rd = request.getRequestDispatcher("app/FormEditPaciente.jsp");
			rd.forward(request, response);
		}else{
		
			RequestDispatcher rd = request.getRequestDispatcher("app/FormCadPaciente.jsp");
			rd.forward(request, response);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		DateFormat formatardata = new SimpleDateFormat("dd/mm/yyyy");
		Calendar cal = Calendar.getInstance();
		Date data;
		List<Paciente> pacientes = new ArrayList<Paciente>();
		Paciente paciente = new Paciente();
		Endereco endereco = new Endereco();
		Cidade cidade = new Cidade();
		CidadeDAO cidadeDAO = new CidadeDAO();
		
		//pessoa
		String nome = request.getParameter("nome");
		String cpf = request.getParameter("cpf");
		String rg  = request.getParameter("gruposanguineo");
		String sexo = request.getParameter("sexo");
		String estadocivil = request.getParameter("estadocivil");
		String telefone = request.getParameter("telefone");
		String celular = request.getParameter("celular");
		String datanascimento = request.getParameter("datanascimento");
		String email = request.getParameter("email");
		String observacao = request.getParameter("observacao");
		//endereco
		String logradouro = request.getParameter("logradouro");
		String bairro = request.getParameter("bairro");
		String cep = request.getParameter("cep");
		String numero = request.getParameter("numero");
		String cidadeID = request.getParameter("cidade");
		
		paciente.setNome(nome);
		paciente.setCpf(cpf);
		paciente.setRg(rg);
		paciente.setSexo(sexo);
		paciente.setEstadoCivil(estadocivil);
		paciente.setTelefone(telefone);
		paciente.setCelular(celular);
		
		try {
			data = formatardata.parse(datanascimento);
			cal.setTime(data);
			paciente.setDataCadastro(cal);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		paciente.setEmail(email);
		paciente.setObservacao(observacao);
		
		endereco.setLogradouro(logradouro);
		endereco.setBairro(bairro);
		endereco.setCep(cep);
		endereco.setNumero(numero);
		
		cidade = cidadeDAO.findCidadeByID(cidadeID);
		endereco.setCidade(cidade);
		
		pacienteDAO.begin();
		pacienteDAO.merge(paciente);
		pacienteDAO.commit();
		pacienteDAO.close();
		
		
	}

}
